package PenTest.Soluation;

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息


/**
 *题目： 寻找最长的数字字符串
 * 1. 利用滑动窗口算法
 * 2， 最终记录当前位置的值，进行字符串阶段的读取
 */
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别


        // 输入
        String  a = in.next();
        int n = a.length();

//        起始位置
        int left = 0, right = 0;
        int leftIndex = 0, rightIndex = 0;

        int len = -1;
        while (right < n) {

            // 记录起始位置
//            入窗口
            if (Character.isDigit(a.charAt(right))) {
                left = right;
            }

            // 开始向右走出非数字字符
            while (right < n && Character.isDigit(a.charAt(right))) {
                right++;

                // 更新长度
                // 记录最长长度的位置
                if (right - left > len) {
                    leftIndex = left;
                    rightIndex = right;
                    len = right - left;
                }
            }


            right++;
        }

       
//        输出
        System.out.println(a.substring(leftIndex, rightIndex));
    }
}


/**
  题目： 岛屿数量
  1. 遍历每个字符，从1开始进行深搜
  2。 用check 数组来记录
  3. 一旦走过的不计数， 没走过的就计数

 */


class Solution {

    // 用来检查
    boolean[][] check;

    // 下标
    int[] n={0,0,-1,1};
    int[] m = {-1,1,0,0};

    // 边界
    int row ;
    int col ;



    public int solve (char[][] grid) {
        // 边界值
        row = grid.length;
        col = grid[0].length;

        // 用于存储结果
        int ret =0;

        check = new boolean[row][col];

        // 遍历查找
        for(int i=0;i<row;i++) {
            for(int j=0;j < col;j++) {
                // 判断当前字符是否为 1 并且是否走过
                if(grid[i][j]=='1' && !check[i][j]) {

                    // 进行深搜
                    dfs(grid,i,j);

                    // 相邻位判断， 一旦有相邻为flg =1

                    ret++;


                }
            }
        }


        return ret;
    }

    public void dfs(char[][] nums,int i, int j) {
        check[i][j]= true;

        for(int k=0; k<4;k++) {
            int x = i +n[k];
            int y = j +m[k];


            if(x>=0 && x < row && y>= 0 && y < col && nums[x][y]=='1' && !check[x][y] ) {


                dfs(nums,x,y);
            }
        }
    }
}